@bridgesplit/rwa-token-sdk
Version:
RWA Token SDK for the development of permissioned tokens on SVM blockchains.
900 lines (899 loc) • 27 kB
TypeScript
/**
* Program IDL in camelCase format in order to be used in JS/TS.
*
* Note that this is only a type helper and is not the actual IDL. The original
* IDL can be found at `target/idl/policy_engine.json`.
*/
export type PolicyEngine = {
"address": "po1cPf1eyUJJPqULw4so3T4JU9pdFn83CDyuLEKFAau";
"metadata": {
"name": "policyEngine";
"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": "attachToPolicyAccount";
"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": "policyEngine";
"writable": true;
},
{
"name": "policyAccount";
"writable": true;
"pda": {
"seeds": [
{
"kind": "account";
"path": "policyEngine";
}
];
};
},
{
"name": "systemProgram";
"address": "11111111111111111111111111111111";
}
];
"args": [
{
"name": "identityFilter";
"type": {
"defined": {
"name": "identityFilter";
};
};
},
{
"name": "policyType";
"type": {
"defined": {
"name": "policyType";
};
};
}
];
},
{
"name": "createPolicyAccount";
"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": "policyEngine";
"writable": true;
},
{
"name": "policyAccount";
"writable": true;
"pda": {
"seeds": [
{
"kind": "account";
"path": "policyEngine";
}
];
};
},
{
"name": "systemProgram";
"address": "11111111111111111111111111111111";
}
];
"args": [
{
"name": "identityFilter";
"type": {
"defined": {
"name": "identityFilter";
};
};
},
{
"name": "policyType";
"type": {
"defined": {
"name": "policyType";
};
};
}
];
},
{
"name": "createPolicyEngine";
"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": "assetMint";
},
{
"name": "policyEngineAccount";
"writable": true;
"pda": {
"seeds": [
{
"kind": "account";
"path": "assetMint";
}
];
};
},
{
"name": "extraMetasAccount";
"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": "assetMint";
}
];
};
},
{
"name": "systemProgram";
"address": "11111111111111111111111111111111";
}
];
"args": [
{
"name": "authority";
"type": "pubkey";
},
{
"name": "delegate";
"type": {
"option": "pubkey";
};
}
];
},
{
"name": "createTrackerAccount";
"docs": [
"create tracker account"
];
"discriminator": [
40,
16,
40,
191,
109,
177,
83,
190
];
"accounts": [
{
"name": "payer";
"writable": true;
"signer": true;
},
{
"name": "owner";
},
{
"name": "assetMint";
},
{
"name": "trackerAccount";
"writable": true;
"pda": {
"seeds": [
{
"kind": "account";
"path": "assetMint";
},
{
"kind": "account";
"path": "owner";
}
];
};
},
{
"name": "systemProgram";
"address": "11111111111111111111111111111111";
},
{
"name": "eventAuthority";
"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": "detachFromPolicyAccount";
"docs": [
"remove policy"
];
"discriminator": [
81,
24,
116,
10,
12,
108,
109,
242
];
"accounts": [
{
"name": "payer";
"writable": true;
"signer": true;
},
{
"name": "signer";
"signer": true;
},
{
"name": "policyEngine";
"writable": true;
},
{
"name": "policyAccount";
"writable": true;
"pda": {
"seeds": [
{
"kind": "account";
"path": "policyEngine";
}
];
};
},
{
"name": "systemProgram";
"address": "11111111111111111111111111111111";
}
];
"args": [
{
"name": "hash";
"type": "string";
}
];
},
{
"name": "executeTransaction";
"docs": [
"execute transfer hook"
];
"discriminator": [
105,
37,
101,
197,
75,
251,
102,
26
];
"accounts": [
{
"name": "sourceAccount";
},
{
"name": "assetMint";
},
{
"name": "destinationAccount";
},
{
"name": "ownerDelegate";
},
{
"name": "extraMetasAccount";
"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": "assetMint";
}
];
};
},
{
"name": "policyEngineAccount";
},
{
"name": "identityRegistry";
"address": "idtynCMYbdisCTv4FrCWPSQboZb1uM4TV2cPi79yxQf";
},
{
"name": "identityRegistryAccount";
},
{
"name": "receiverIdentityAccount";
},
{
"name": "trackerAccount";
"writable": true;
},
{
"name": "policyAccount";
"writable": true;
},
{
"name": "instructionsProgram";
},
{
"name": "sourceIdentityAccount";
}
];
"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": "identityLevels";
"type": {
"array": [
"u8",
10
];
};
},
{
"name": "comparisionType";
"type": {
"defined": {
"name": "comparisionType";
};
};
}
];
};
},
{
"name": "policy";
"type": {
"kind": "struct";
"fields": [
{
"name": "hash";
"type": "string";
},
{
"name": "identityFilter";
"type": {
"defined": {
"name": "identityFilter";
};
};
},
{
"name": "policyType";
"type": {
"defined": {
"name": "policyType";
};
};
}
];
};
},
{
"name": "policyAccount";
"type": {
"kind": "struct";
"fields": [
{
"name": "version";
"type": "u8";
},
{
"name": "policyEngine";
"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": "assetMint";
"docs": [
"asset mint"
];
"type": "pubkey";
},
{
"name": "authority";
"docs": [
"authority of the registry"
];
"type": "pubkey";
},
{
"name": "delegate";
"docs": [
"policy delegate"
];
"type": "pubkey";
},
{
"name": "maxTimeframe";
"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": "currentHolders";
"type": "u64";
}
];
},
{
"name": "balanceLimit";
"fields": [
{
"name": "limit";
"type": "u128";
},
{
"name": "currentBalance";
"type": "u128";
}
];
}
];
};
},
{
"name": "trackerAccount";
"type": {
"kind": "struct";
"fields": [
{
"name": "version";
"type": "u8";
},
{
"name": "assetMint";
"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";
}
];
};
}
];
};