Documentation
# `did:sol` Program

The [anchor-based](https://github.com/coral-xyz/anchor) program of `did:sol` on Solana.

## is_authority Integration
Other programs can check if a verification method (e.g. public key or address) by integrating `is_authority`:

```rust
use sol_did::integrations::is_authority;
```

```rust
// pub fn is_authority(did_account: &AccountInfo, 
//                     did_account_seed_bump: Option<u8>, 
//                     controlling_did_accounts: &[AccountInfo], 
//                     key: &[u8], 
//                     filter_types: Option<&[VerificationMethodType]>, 
//                     filter_fragment: Option<&String>) -> Result<bool>
```

## Instructions

### `initialize`
Arguments:
- size: `u32`

Accounts:
- didData `isMut`
- authority `isSigner`, `isMut`
- payer `isSigner`, `isMut`
- systemProgram 

### `resize`
Arguments:
- size:`u32`
- ethSignature:`Option<Secp256k1RawSignature>`

Accounts:
- didData `isMut`
- authority `isSigner`
- payer `isSigner`, `isMut`
- systemProgram

### `close`
Arguments:
- ethSignature:`Option<Secp256k1RawSignature>`

Accounts:
- didData `isMut`
- authority `isSigner`
- destination `isMut`
- systemProgram

### `add_verification_method`
Arguments:
- verificationMethod:`VerificationMethod`
- ethSignature:`Option<Secp256k1RawSignature>`

Accounts:
- didData `isMut`
- authority `isSigner`

### `remove_verification_method`
Arguments:
- fragment:`string`
- ethSignature:`Option<Secp256k1RawSignature>`

Accounts:
- didData `isMut`
- authority `isSigner`

### `add_service`
Arguments:
- service:`Service`
- allowOverwrite:`bool`
- ethSignature:`Option<Secp256k1RawSignature>`

Accounts:
- didData `isMut`
- authority `isSigner`

### `remove_service`
Arguments:
- fragment:`string`
- ethSignature:`Option<Secp256k1RawSignature>`

Accounts:
- didData `isMut`
- authority `isSigner`

### `set_vm_flags`
Arguments:
- flagsVm:`UpdateFlagsVerificationMethod`
- ethSignature:`Option<Secp256k1RawSignature>`

Accounts:
- didData `isMut`
- authority `isSigner`

### `set_controllers`
Arguments:
- setControllersArg:`SetControllersArg`
- ethSignature:`Option<Secp256k1RawSignature>`

Accounts:
- didData `isMut`
- authority `isSigner`

### `update`
Arguments:
- updateArg:`UpdateArg`
- ethSignature:`Option<Secp256k1RawSignature>`

Accounts:
- didData `isMut`
- authority `isSigner`

### `migrate`
Arguments:

Accounts:
- didData `isMut`
- authority
- payer `isSigner`, `isMut`
- legacyDidData
- systemProgram

### Deployments

- Mainnet-beta: [didso1Dpqpm4CsiCjzP766BGY89CAdD6ZBL68cRhFPc]https://explorer.solana.com/address/didso1Dpqpm4CsiCjzP766BGY89CAdD6ZBL68cRhFPc
- Devnet: [didso1Dpqpm4CsiCjzP766BGY89CAdD6ZBL68cRhFPc]https://explorer.solana.com/address/didso1Dpqpm4CsiCjzP766BGY89CAdD6ZBL68cRhFPc?cluster=devnet
- Testnet: TODO...

### APR Reference

- `did:sol` program on [APR]https://www.apr.dev/program/didso1Dpqpm4CsiCjzP766BGY89CAdD6ZBL68cRhFPc