UNPKG

@bridgesplit/rwa-token-sdk

Version:

RWA Token SDK for the development of permissioned tokens on SVM blockchains.

894 lines (893 loc) 26.7 kB
{ "address": "po1cPf1eyUJJPqULw4so3T4JU9pdFn83CDyuLEKFAau", "metadata": { "name": "policy_engine", "version": "0.0.1", "spec": "0.1.0", "description": "The Policy Registry Program (PRP) enables the creation of policies that can be used to control the flow of funds in a programmatic way." }, "instructions": [ { "name": "attach_to_policy_account", "docs": [ "attach a policy" ], "discriminator": [ 247, 116, 130, 17, 89, 232, 103, 16 ], "accounts": [ { "name": "payer", "writable": true, "signer": true }, { "name": "signer", "signer": true }, { "name": "policy_engine", "writable": true }, { "name": "policy_account", "writable": true, "pda": { "seeds": [ { "kind": "account", "path": "policy_engine" } ] } }, { "name": "system_program", "address": "11111111111111111111111111111111" } ], "args": [ { "name": "identity_filter", "type": { "defined": { "name": "IdentityFilter" } } }, { "name": "policy_type", "type": { "defined": { "name": "PolicyType" } } } ] }, { "name": "create_policy_account", "docs": [ "policies", "create policy account" ], "discriminator": [ 52, 228, 143, 138, 102, 135, 59, 193 ], "accounts": [ { "name": "payer", "writable": true, "signer": true }, { "name": "signer", "signer": true }, { "name": "policy_engine", "writable": true }, { "name": "policy_account", "writable": true, "pda": { "seeds": [ { "kind": "account", "path": "policy_engine" } ] } }, { "name": "system_program", "address": "11111111111111111111111111111111" } ], "args": [ { "name": "identity_filter", "type": { "defined": { "name": "IdentityFilter" } } }, { "name": "policy_type", "type": { "defined": { "name": "PolicyType" } } } ] }, { "name": "create_policy_engine", "docs": [ "create a policy registry" ], "discriminator": [ 85, 105, 207, 153, 73, 125, 225, 54 ], "accounts": [ { "name": "payer", "writable": true, "signer": true }, { "name": "signer", "signer": true }, { "name": "asset_mint" }, { "name": "policy_engine_account", "writable": true, "pda": { "seeds": [ { "kind": "account", "path": "asset_mint" } ] } }, { "name": "extra_metas_account", "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ 101, 120, 116, 114, 97, 45, 97, 99, 99, 111, 117, 110, 116, 45, 109, 101, 116, 97, 115 ] }, { "kind": "account", "path": "asset_mint" } ] } }, { "name": "system_program", "address": "11111111111111111111111111111111" } ], "args": [ { "name": "authority", "type": "pubkey" }, { "name": "delegate", "type": { "option": "pubkey" } } ] }, { "name": "create_tracker_account", "docs": [ "create tracker account" ], "discriminator": [ 40, 16, 40, 191, 109, 177, 83, 190 ], "accounts": [ { "name": "payer", "writable": true, "signer": true }, { "name": "owner" }, { "name": "asset_mint" }, { "name": "tracker_account", "writable": true, "pda": { "seeds": [ { "kind": "account", "path": "asset_mint" }, { "kind": "account", "path": "owner" } ] } }, { "name": "system_program", "address": "11111111111111111111111111111111" }, { "name": "event_authority", "pda": { "seeds": [ { "kind": "const", "value": [ 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121 ] } ] } }, { "name": "program" } ], "args": [] }, { "name": "detach_from_policy_account", "docs": [ "remove policy" ], "discriminator": [ 81, 24, 116, 10, 12, 108, 109, 242 ], "accounts": [ { "name": "payer", "writable": true, "signer": true }, { "name": "signer", "signer": true }, { "name": "policy_engine", "writable": true }, { "name": "policy_account", "writable": true, "pda": { "seeds": [ { "kind": "account", "path": "policy_engine" } ] } }, { "name": "system_program", "address": "11111111111111111111111111111111" } ], "args": [ { "name": "hash", "type": "string" } ] }, { "name": "execute_transaction", "docs": [ "execute transfer hook" ], "discriminator": [ 105, 37, 101, 197, 75, 251, 102, 26 ], "accounts": [ { "name": "source_account" }, { "name": "asset_mint" }, { "name": "destination_account" }, { "name": "owner_delegate" }, { "name": "extra_metas_account", "pda": { "seeds": [ { "kind": "const", "value": [ 101, 120, 116, 114, 97, 45, 97, 99, 99, 111, 117, 110, 116, 45, 109, 101, 116, 97, 115 ] }, { "kind": "account", "path": "asset_mint" } ] } }, { "name": "policy_engine_account" }, { "name": "identity_registry", "address": "idtynCMYbdisCTv4FrCWPSQboZb1uM4TV2cPi79yxQf" }, { "name": "identity_registry_account" }, { "name": "receiver_identity_account" }, { "name": "tracker_account", "writable": true }, { "name": "policy_account", "writable": true }, { "name": "instructions_program" }, { "name": "source_identity_account" } ], "args": [ { "name": "amount", "type": "u64" } ] } ], "accounts": [ { "name": "PolicyAccount", "discriminator": [ 218, 201, 183, 164, 156, 127, 81, 175 ] }, { "name": "PolicyEngineAccount", "discriminator": [ 124, 85, 205, 80, 2, 18, 26, 45 ] }, { "name": "TrackerAccount", "discriminator": [ 83, 95, 166, 148, 57, 30, 90, 210 ] } ], "errors": [ { "code": 6000, "name": "InvalidPolicy", "msg": "Invalid policy passed" }, { "code": 6001, "name": "TransactionAmountLimitExceeded", "msg": "Transaction amount limit exceeded" }, { "code": 6002, "name": "TransactionAmountVelocityExceeded", "msg": "Transaction amount velocity exceeded" }, { "code": 6003, "name": "TransactionCountVelocityExceeded", "msg": "Transaction count velocity exceeded" }, { "code": 6004, "name": "IdentityLevelLimitExceeded", "msg": "Identity level limit exceeded" }, { "code": 6005, "name": "PolicyEngineFull", "msg": "Policy registry is full, cannot add more policies" }, { "code": 6006, "name": "PolicyNotFound", "msg": "Policy not found" }, { "code": 6007, "name": "IdentityFilterFailed", "msg": "Identity filter failed" }, { "code": 6008, "name": "UnauthorizedSigner", "msg": "Unauthorized signer" }, { "code": 6009, "name": "PolicyAlreadyExists", "msg": "Policy already exists" }, { "code": 6010, "name": "MaxBalanceExceeded", "msg": "Max balance exceeded" }, { "code": 6011, "name": "InvalidCpiTransferAmount", "msg": "Invalid CPI transfer amount" }, { "code": 6012, "name": "InvalidCpiTransferMint", "msg": "Invalid CPI transfer mint" }, { "code": 6013, "name": "InvalidCpiTransferProgram", "msg": "Invalid CPI transfer program" }, { "code": 6014, "name": "InvalidPdaPassedIn", "msg": "Invalid PDA passed in" }, { "code": 6015, "name": "TransferHistoryFull", "msg": "Transfer history full" }, { "code": 6016, "name": "TransferPaused", "msg": "All Transfers have been paused" }, { "code": 6017, "name": "ForceFullTransfer", "msg": "Expected source account to transfer full amount" }, { "code": 6018, "name": "HolderLimitExceeded", "msg": "Holder limit exceeded" }, { "code": 6019, "name": "BalanceLimitExceeded", "msg": "Balance limit exceeded" } ], "types": [ { "name": "ComparisionType", "repr": { "kind": "rust" }, "type": { "kind": "enum", "variants": [ { "name": "Or" }, { "name": "And" } ] } }, { "name": "IdentityFilter", "type": { "kind": "struct", "fields": [ { "name": "identity_levels", "type": { "array": [ "u8", 10 ] } }, { "name": "comparision_type", "type": { "defined": { "name": "ComparisionType" } } } ] } }, { "name": "Policy", "type": { "kind": "struct", "fields": [ { "name": "hash", "type": "string" }, { "name": "identity_filter", "type": { "defined": { "name": "IdentityFilter" } } }, { "name": "policy_type", "type": { "defined": { "name": "PolicyType" } } } ] } }, { "name": "PolicyAccount", "type": { "kind": "struct", "fields": [ { "name": "version", "type": "u8" }, { "name": "policy_engine", "docs": [ "Engine account that the policy belongs to" ], "type": "pubkey" }, { "name": "policies", "docs": [ "Different policies that can be applied to the policy account", "initial max len" ], "type": { "vec": { "defined": { "name": "Policy" } } } } ] } }, { "name": "PolicyEngineAccount", "type": { "kind": "struct", "fields": [ { "name": "version", "docs": [ "version" ], "type": "u8" }, { "name": "asset_mint", "docs": [ "asset mint" ], "type": "pubkey" }, { "name": "authority", "docs": [ "authority of the registry" ], "type": "pubkey" }, { "name": "delegate", "docs": [ "policy delegate" ], "type": "pubkey" }, { "name": "max_timeframe", "docs": [ "max timeframe of all the policies" ], "type": "i64" } ] } }, { "name": "PolicyType", "type": { "kind": "enum", "variants": [ { "name": "IdentityApproval" }, { "name": "TransactionAmountLimit", "fields": [ { "name": "limit", "type": "u64" } ] }, { "name": "TransactionAmountVelocity", "fields": [ { "name": "limit", "type": "u64" }, { "name": "timeframe", "type": "i64" } ] }, { "name": "TransactionCountVelocity", "fields": [ { "name": "limit", "type": "u64" }, { "name": "timeframe", "type": "i64" } ] }, { "name": "MaxBalance", "fields": [ { "name": "limit", "type": "u64" } ] }, { "name": "TransferPause" }, { "name": "ForceFullTransfer" }, { "name": "HolderLimit", "fields": [ { "name": "limit", "type": "u64" }, { "name": "current_holders", "type": "u64" } ] }, { "name": "BalanceLimit", "fields": [ { "name": "limit", "type": "u128" }, { "name": "current_balance", "type": "u128" } ] } ] } }, { "name": "TrackerAccount", "type": { "kind": "struct", "fields": [ { "name": "version", "type": "u8" }, { "name": "asset_mint", "type": "pubkey" }, { "name": "owner", "type": "pubkey" }, { "name": "transfers", "type": { "vec": { "defined": { "name": "Transfer" } } } } ] } }, { "name": "Transfer", "type": { "kind": "struct", "fields": [ { "name": "amount", "type": "u64" }, { "name": "timestamp", "type": "i64" } ] } } ] }