@bridgesplit/rwa-token-sdk
Version:
RWA Token SDK for the development of permissioned tokens on SVM blockchains.
894 lines (893 loc) • 26.7 kB
JSON
{
"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"
}
]
}
}
]
}